国产精品乱码在线观看av免-国产精品乱人伦一区二区三区-国产精品乱人无码av在线a-国产精品乱人一区二区三区-国产精品乱偷伦免费视频免费观看-国产精品乱子乱xxxx

您好,歡迎來到重慶城鄉網
 
用戶名: 密碼: 看不清楚請點擊刷新驗證碼 登錄/免費注冊   幫助中心
免費發布您的鄉村旅游、基地、農副產品等信息!免費開通網站
首頁 > IT常識 > 列表

Python使用Selenium自動進行百度搜索的實現

發布時間: 2023/3/10 16:48:38 人氣: 995
目錄安裝 Selenium寫代碼點位網頁元素

我們今天介紹一個非常適合新手的python自動化小項目,項目雖小,但是五臟俱全。它是一個自動化操作網頁瀏覽器的小應用:打開瀏覽器,進入百度網頁,搜索關鍵詞,最后把搜索結果保存到一個文件里。這個例子非常適合新手學習Python網絡自動化,不僅能夠了解如何使用Selenium,而且還能知道一些超級好用的小工具。

當然有人把操作網頁,然后把網頁的關鍵內容保存下來的應用一律稱作網絡爬蟲,好吧,如果你想這么爬取內容,隨你。但是,我更愿意稱它為網絡機器人。

我今天介紹的項目使用Selenium,Selenium 是支持 web 瀏覽器自動化的一系列工具和庫的綜合項目。Selenium 的核心是 WebDriver,這是一個編寫指令集的接口,可以在許多瀏覽器中互換運行。

閑言少敘,硬貨安排。

安裝 Selenium

可以使用 pip 安裝 Python 的 Selenium 庫:pip install selenium

(可選項:要執行項目并控制瀏覽器,需要安裝特定于瀏覽器的 WebDriver 二進制文件。

下載 WebDriver 二進制文件 并放入 系統 PATH 環境變量 中.)

由于本地瀏覽器版本升級,引起的版本不一致問題,和系統PATH環境變量的設置比較繁瑣,所以我使用webdriver_manager,

安裝 Install manager:

pip install webdriver-manager

寫代碼

引入模塊:

from selenium import webdriverfrom webdriver_manager.chrome import ChromeDriverManagerfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.common.keys import Keys

首先我們定義一個類Search_Baidu, 它主要用于初始化;定義自動化步驟的方法;結束關閉瀏覽器。

class Search_Baidu:def __init__(self):def search(self, keyword):def tear_down(self):

接下來我們分別介紹每個方法的實現過程。

def __init__(self): #類構造函數,用于初始化selenium的webdriver url = ’https://www.baidu.com/’ #這里定義訪問的網絡地址 self.url = url options = webdriver.ChromeOptions() options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2}) # 不加載圖片,加快訪問速度 options.add_experimental_option(’excludeSwitches’, [’enable-automation’]) # 此步驟很重要,設置為開發者模式,防止被各大網站識別出來使用了Selenium# 這里使用chrome瀏覽器,而且使用我們剛才安裝的webdriver_manager的chrome driver,并賦值上面的瀏覽器設置options變量 self.browser = webdriver.Chrome(ChromeDriverManager().install(), options=options) self.wait = WebDriverWait(self.browser, 10) #超時時長為10s,由于自動化需要等待網頁控件的加載,所以這里設置一個默認的等待超時,時長為10秒 def tear_down(self): self.browser.close() #最后,關閉瀏覽器

接下來是重頭戲,寫我們操作瀏覽器的步驟,打開瀏覽器,進入百度網頁,輸入搜索關鍵字:Selenium,等待搜索結果,把搜索結果的題目和網址保存到文件里。

def search(self, keyword): # 打開百度網頁 self.browser.get(self.url) # 等待搜索框出現,最多等待10秒,否則報超時錯誤 search_input = self.wait.until(EC.presence_of_element_located((By.XPATH, ’//*[@id="kw"]’))) # 在搜索框輸入搜索的關鍵字 search_input.send_keys(keyword) # 回車 search_input.send_keys(Keys.ENTER) # 等待10秒鐘 self.browser.implicitly_wait(10) # 找到所有的搜索結果 results = self.browser.find_elements_by_css_selector(".t a , em , .c-title-text") # 遍歷所有的搜索結果 with open("search_result.txt","w") as file: for result in results: if result.get_attribute("href"): print(result.get_attribute("text").strip()) # 搜索結果的標題 title = result.get_attribute("text").strip() # 搜索結果的網址 link = result.get_attribute("href") # 寫入文件 file.write(f"Title: {title}, link is: {link} n")

點位網頁元素

這里頭有個關鍵點,就是如何點位網頁元素:

比如:

search_input = self.wait.until(EC.presence_of_element_located((By.XPATH, ’//*[@id="kw"]’)))

還有:

self.browser.find_elements_by_css_selector(".t a , em , .c-title-text")

打個比方,快遞員通過地址找到你家,給你送快遞,這里的XPATH和CSS Selector就是網頁元素的地址,那么如何得到呢?
第一個就是Chrome自帶的開發者工具,可以快捷鍵F12,也可以自己在下圖中找到:

Python使用Selenium自動進行百度搜索的實現

然后在百度搜索框,右鍵:

Python使用Selenium自動進行百度搜索的實現

找到輸入框的HTML元素,

在HTML元素右鍵,拷貝XPath地址。

Python使用Selenium自動進行百度搜索的實現

這是比較簡單的定位網頁元素的方法。接下來我們定位搜索結果元素的時候,就遇到了麻煩,如下圖:

Python使用Selenium自動進行百度搜索的實現

我們不能單獨的定位每個元素,而是要找到規律,一次把所有的搜索結果找到,然后返回一個list,我們好遍歷這個list,這個怎么實現呢?

接下來,我們請出一大神器:SelectorGadget

Python使用Selenium自動進行百度搜索的實現

SelectorGadget是一個CSS Selector生成器,大家可以在他的官方文檔找到具體的使用說明,我這里簡單介紹一下:
首先啟動SelectorGadget,點擊一下圖標

瀏覽器會出現下面的框框:

Python使用Selenium自動進行百度搜索的實現

然后我們在網頁用鼠標左鍵,點擊我們要定位的元素

Python使用Selenium自動進行百度搜索的實現

然后頁面會變成下面的樣子:

所有黃色的部分說明都被選擇了,如果我們不想要的元素,右鍵點擊,使它變為紅色,說明它被去掉了。如果沒有被選擇我們又需要的元素,我們左鍵選擇它,使它變為綠色。最后我們希望選擇的頁面元素都變成了綠色或者黃色,如下圖:

Python使用Selenium自動進行百度搜索的實現

我們就可以拷貝框框里的內容作為CSS Selector了。

Python使用Selenium自動進行百度搜索的實現

通過CSS Selector找到所有的搜索結果。

results = self.browser.find_elements_by_css_selector(".t a , em , .c-title-text")

到此,我們就實現了這么個簡單的小應用了,其實selenium就是幫助我們自動操作網頁元素,所以我們定位網頁元素就是重中之重,希望本文給你帶來一點幫助。

下面我附上代碼:

from datetime import timefrom selenium import webdriverfrom webdriver_manager.chrome import ChromeDriverManagerfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.common.keys import Keysclass Search_Baidu: def __init__(self): url = ’https://www.baidu.com/’ self.url = url options = webdriver.ChromeOptions() options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2}) # 不加載圖片,加快訪問速度 options.add_experimental_option(’excludeSwitches’, [’enable-automation’]) # 此步驟很重要,設置為開發者模式,防止被各大網站識別出來使用了Selenium self.browser = webdriver.Chrome(ChromeDriverManager().install(), options=options) self.wait = WebDriverWait(self.browser, 10) #超時時長為10s def search(self, keyword): # 打開百度網頁 self.browser.get(self.url) # 等待搜索框出現,最多等待10秒,否則報超時錯誤 search_input = self.wait.until(EC.presence_of_element_located((By.XPATH, ’//*[@id="kw"]’))) # 在搜索框輸入搜索的關鍵字 search_input.send_keys(keyword) # 回車 search_input.send_keys(Keys.ENTER) # 等待10秒鐘 self.browser.implicitly_wait(10) # 找到所有的搜索結果 results = self.browser.find_elements_by_css_selector(".t a , em , .c-title-text") # 遍歷所有的搜索結果 with open("search_result.txt","w") as file: for result in results: if result.get_attribute("href"): print(result.get_attribute("text").strip()) # 搜索結果的標題 title = result.get_attribute("text").strip() # 搜索結果的網址 link = result.get_attribute("href") # 寫入文件 file.write(f"Title: {title}, link is: {link} n") def tear_down(self): self.browser.close()if __name__ == "__main__": search = Search_Baidu() search.search("selenium") search.tear_down()


·上篇:電腦常識及技巧大全(關于計算機的一些基本知識)
·下篇:python實現自動化辦公郵件合并功能
還沒有對此評論!
評論
☆☆ ☆☆☆ ☆☆☆☆ ☆☆☆☆☆
推薦游玩
重慶涪陵大木花谷內心怡農家主營:餐飲、休閑、觀光、娛樂等,農家樂設有住宿,能同時容納40人住宿
地址:重慶市涪陵區大木花谷內
人氣:4293    加入時間:2023-11-06      地區:【涪陵區
璧山很有情調的一個農場璧山本草傳說農場(民宿、農家樂),團建、野炊、住宿為一體的游玩場地
地址:璧山區正興鎮沙塝村四組
人氣:7524    加入時間:2023-04-13      地區:【壁山區
巴南云篆山知青山莊,體驗知青年代的回憶,會議娛樂一體
地址:重慶市巴南區云纂山風景區
人氣:8358    加入時間:2022-09-14      地區:【巴南區
巴南天星寺鎮花房筑·明院
地址:重慶市巴南區天星寺鎮花房村董上組
人氣:7378    加入時間:2022-06-22      地區:【巴南區
歌樂山上天池度假村度假游玩的好去處(農家樂)
地址:重慶市沙坪壩區歌樂山鎮天池村
人氣:10057    加入時間:2022-04-09      地區:【沙坪壩
巴南云篆山網紅打卡地徐掌柜北方部落民宿,等你來打卡!特色燒烤】二日游:特色坑烤2人+特色住宿1間(大
地址:重慶市巴南區魚洞云篆山一社24號
人氣:7191    加入時間:2021-08-28      地區:【巴南區
重慶沙坪壩歌樂山海石公園石林城堡燒烤:自助燒烤暢吃不限+景區游玩+機麻+植樹+甜點
地址:重慶市·沙坪壩區·中梁鎮·歌樂山北部環形山麓重慶海石公園
人氣:6893    加入時間:2021-08-26      地區:【沙坪壩
重慶江津區雨仙農谷民宿,農家樂酒店,水果采摘 | 蔬菜采摘 | 騎馬 | 插秧 | 摸魚
地址:江津區保坪村雨仙農谷稻田設計師酒店
人氣:13452    加入時間:2021-08-18      地區:【江津區
巴南豐盛鎮彩色森林云山房鄉村藝術酒店
地址:重慶市·巴南區·豐盛鎮·重慶市巴南區豐盛鎮油房村茶山
人氣:5264    加入時間:2021-07-29      地區:【巴南區
銅梁愛蓮湖度假酒店,土橋荷花園
地址:銅梁區·土橋鎮·慶林村20社(愛蓮湖濕地公園)
人氣:6449    加入時間:2021-07-29      地區:【銅梁區
  • 推薦閱讀
  • 推薦農業基地
主站蜘蛛池模板: 4虎影院网址大全| 老司机精品福利在线资源| 欧美激情一区二区三区AA片| 日本三级黄色片网站| 欧美最骚最疯日B视频观看| 操综合网| 免费毛片网站在线观看| 短篇H爽文小说集大全| 综合久久2o19| 最近中文字幕免费国语6| 午夜成年人网站| 国产精品久久久久久久A片冻果| 欧美日韩一区二区不卡三区| 另类天堂| 免费精品精品国产欧美在线| 美女视频黄的全是免费| 黄网13| 让人爽到湿的小黄书软件下载| 日韩中文字幕视频在线| 欧洲乱码卡一卡二| 色婷婷亚洲综合| 国产人妻出轨26P| 亚洲天天网综合自拍图片专区| 成熟交BGMBGMBGM在线看| 窝窝午夜看片成人精品| 一女六男NP慎入H| 亚洲图片欧美日韩| 福利视频网址| 无码A片激情做爰视频在线观看| 精品综合久久久久久97超人| 久久草资源费视频在线观看| 99久久综合给久久精品| 亚洲精品久久久久久久久无码精品| 成人毛片免费| 强行进女小姪女小芳| 亚洲区中文字幕| 免费无套内谢少妇毛片A片软| 亚洲 暴爽 AV人人爽日日碰| 久久福利国产| GAY高潮痉挛哭叫失禁男小说 | 高清电影在线|